package org.bspv.pharma.manager;

import java.util.List;

import org.bspv.pharma.model.Place;

public interface PlaceManager extends Manager<Place, Long> {

    /**
     * Methode de recherche d'un emplacement par son code.
     * 
     * @param placeCode
     *            Le code de l'emplacement recherché
     * @return L'emplacement correspondant (ou null si aucun emplacement trouvé)
     */
    Place findByCode(String placeCode);

    /**
     * Methode de recherche des emplacements valides de niveau 1.
     * 
     * @return Liste d'emplacements valides de niveau 1
     */
    List<Place> findTopPlaces();

    /**
     * Retourne la liste des enfants valides de l'emplacement en paramètre.
     * 
     * @param parent
     *            Emplacement parent
     * @return Liste d'emplacements enfants valides
     */
    List<Place> findValidChildren(Place parent);

    /**
     * Retourne la liste des enfants et sous-enfants valides de l'emplacement en paramètre.
     * 
     * @param parent
     *            Emplacement parent
     * @return Liste de descandants valides
     */
    List<Place> findAllValidChildren(Place parent);
    
}
